package com.feihong.txgw.inter.contract.home;

import com.feihong.txgw.json.HomeJSON;
import com.feihong.txgw.message.RefreshMsgIconMessage;
import com.feihong.txgw.model.bean.home.HomeDialogShowModel;
import com.feihong.txgw.ui.mvp.model.IBaseModel;
import com.feihong.txgw.ui.mvp.precenter.AbBasePrecenter;
import com.feihong.txgw.ui.mvp.view.IBaseFragment;

import io.reactivex.Observable;

/**
 * @Author wangziheng
 * @ProjectName txgw_app
 * @ClassName IHomeContract
 * @package com.feihong.txgw.inter.contract.home
 * @data 2018/5/3 11:22
 * @Describe
 * @Change
 */
public interface IHomeContract {
    abstract class AbHomePrecenter extends AbBasePrecenter<IHomeMainModel,IHomeMainView>{

        /**
         * 加载首页基本数据
         */
        public abstract void loadHomeData();

        /**
         * 获取首页推荐广告弹窗信息
         */
        public abstract void loadHomeRecommendMsg();

        /**
         * 更新当前位置
         */
        public abstract void updateLocatoin();

        /**
         * 获取首页未读消息数量
         */
        public abstract void loadHomeUnreadMsgCount();

        /**
         * 获取首页所有数据
         */
        public abstract void loadHomeAllData();
    }

    interface IHomeMainView extends IBaseFragment{
        /**
         * 获取首页数据
         * @param result
         */
        void setHomeData(HomeJSON result);

        /**
         * 获取首页推荐广告信息
         * @param result
         */
        void showHomeRecommendMsgDialog(HomeDialogShowModel result);

        /**
         * 更新位置信息
         * @param strLocation
         */
        void updateLocatoin(String strLocation);

        void setHomeUnReadMsgStatus(RefreshMsgIconMessage readMsgStatus);
    }

    interface IHomeMainModel extends IBaseModel{
        /**
         * 获取首页数据
         */
        Observable<HomeJSON> getHomeData();

        /**
         * 获取首页推荐广告信息
         */
        Observable<HomeDialogShowModel> getHomeRecommendMsg();

        /**
         * 获取首页未读消息数量
         * @return
         */
        Observable<RefreshMsgIconMessage> getHomeUnreadMsg();

        /**
         * 获取首页全部数据
         * @return
         */
        Observable getHomeAllDate();
    }
}
